#ifndef __CLIENTSOCKETHANDLER_H__
#define __CLIENTSOCKETHANDLER_H__

#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
#include "Defines.h"

/**
 * @brief 该类专用于处理客户端请求
 */
class ClientSocketHandler {
private:
    // 保存每次从客户端套接字读取的数据（最大1024字节）
    char _buff[1024];
    // 实际读取数据长度
    int _buffLength;
    // 当前读到了哪里。该类是供外部使用的，要像像队列一样，从_buff中读取数据时更新当前位置_currentReadPoint
    int _currentReadPoint;
    // 当前处理客户端的套接字
    int _clientSocket;

private:
    // 读取客户端数据，存入当前对象的_buff数组
    bool _readSocket();

public:
    // 构造函数
    ClientSocketHandler(int clientSocket);
    // 析构函数
    ~ClientSocketHandler();
    // 逐字节获取接收到的请求数据（供外部解析）
    bool _getNextByte(char *c);
    // 向客户端发送数据
    bool _writeSocket(const char* buff, int length);
};

#endif // !__CLIENTSOCKETHANDLER_H__
